package com.naxiang.zhaohang.naxiangadressandtimeselect;

import android.graphics.Color;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.view.View;
import android.webkit.WebView;

import com.bigkoo.pickerview.builder.TimePickerBuilder;
import com.bigkoo.pickerview.listener.OnTimeSelectListener;
import com.bigkoo.pickerview.view.TimePickerView;
import com.lljjcoder.Interface.OnCityItemClickListener;
import com.lljjcoder.bean.CityBean;
import com.lljjcoder.bean.DistrictBean;
import com.lljjcoder.bean.ProvinceBean;
import com.lljjcoder.citywheel.CityConfig;
import com.lljjcoder.style.citylist.Toast.ToastUtils;
import com.lljjcoder.style.citypickerview.CityPickerView;
import com.naxiang.zhaohang.interfacs.JsCallAndroid;
import com.naxiang.zhaohang.interfacs.JsInterface;
import com.naxiang.zhaohang.utils.ToastMake;
import com.naxiang.zhaohang.utils.Utils;

import java.util.Calendar;
import java.util.Date;

public class MainActivity extends AppCompatActivity implements JsInterface {

    private WebView        mWebView;
    private TimePickerView mPvTime;
    //申明对象
    private CityPickerView mPicker = new CityPickerView();

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        mWebView = (WebView) findViewById(R.id.webview);

        //第一步,允许android加载js文件
        mWebView.getSettings().setJavaScriptEnabled(true);

        //第二步定义回调接口
        mWebView.addJavascriptInterface(new JsCallAndroid(MainActivity.this), "callandroid");

        //第三部加载html文件
        mWebView.loadUrl("file:///android_asset/index.html");

        mPvTime = getTime();
        /**
         * 预先加载仿iOS滚轮实现的全部数据
         */
        mPicker.init(this);
        getAdrees();
    }

    @Override
    public void adreesClicke() {

        runOnUiThread(new Runnable() {
            @Override
            public void run() {
                //显示
                mPicker.showCityPicker( );
            }
        });
    }

    @Override
    public void timeClicke() {
        //在主线程中进行展示
        runOnUiThread(new Runnable() {
            @Override
            public void run() {
                mPvTime.show();
            }
        });

    }

    public TimePickerView getTime() {


        TimePickerView pvTime = new TimePickerBuilder(MainActivity.this, new OnTimeSelectListener() {
            @Override
            public void onTimeSelect(Date date, View v) {
                long chioceDate = Utils.dateToLong(date);
                long curDate = Utils.getCurDate();
                if (chioceDate >= curDate) {
                    ToastMake.showToast(MainActivity.this, "时间必须小于当前时间");
                    return;
                } else {
                    String time = Utils.getTime(date);
                    mWebView.loadUrl("javascript:if(window.time){window.time(\'" + time + "\')}");

                }
            }
        }).setType(new boolean[]{true, true, true, false, false, false})// 默认全部显示
                .setCancelText("取消")//取消按钮文字
                .setSubmitText("确定")//确认按钮文字
                //                .setContentSize(20)//滚轮文字大小
                .setTitleSize(20)//标题文字大小
                .setTitleText("请选择时间")//标题文字
                .setOutSideCancelable(true)//点击屏幕，点在控件外部范围时，是否取消显示
                .isCyclic(true)//是否循环滚动
                .setTextColorCenter(Color.BLACK)//设置选中项的颜色
                .setTitleColor(Color.BLACK)//标题文字颜色
                .setSubmitColor(Color.BLUE)//确定按钮文字颜色
                .setCancelColor(Color.BLUE)//取消按钮文字颜色
                //                        .setTitleBgColor(0xFF666666)//标题背景颜色 Night mode
                //                        .setBgColor(0xFF333333)//滚轮背景颜色 Night mode
                //                        .setRange(calendar.get(Calendar.YEAR) - 20, calendar.get(Calendar.YEAR) + 20)//默认是1900-2100年
                //                        .setDate(selectedDate)// 如果不设置的话，默认是系统时间*/
                //                        .setRangDate(startDate,endDate)//起始终止年月日设定
                //                        .setLabel("年","月","日","时","分","秒")
                .isCenterLabel(false) //是否只显示中间选中项的label文字，false则每项item全部都带有label。
                //                        .isDialog(true)//是否显示为对话框样式
                .build();
        ;
        pvTime.setDate(Calendar.getInstance());//注：根据需求来决定是否使用该方法（一般是精确到秒的情况），此项可以在弹出选择器的时候重新设置当前时间，避免在初始化之后由于时间已经设定，导致选中时间与当前时间不匹配的问题。
        return pvTime;

    }


    public void getAdrees() {

        //添加默认的配置，不需要自己定义
        CityConfig cityConfig = new CityConfig.Builder()
                .title("选择城市")//标题
//                .titleTextSize(18)//标题文字大小
//                .titleTextColor("#585858")//标题文字颜  色
//                .titleBackgroundColor("#E9E9E9")//标题栏背景色
//                .confirTextColor("#585858")//确认按钮文字颜色
                .confirmText("确定")//确认按钮文字
                .confirmTextSize(16)//确认按钮文字大小
                .cancelTextColor("#585858")//取消按钮文字颜色
                .cancelText("取消")//取消按钮文字
                .cancelTextSize(16)//取消按钮文字大小
//                .setCityWheelType(CityConfig.WheelType.PRO_CITY_DIS)//显示类，只显示省份一级，显示省市两级还是显示省市区三级
//                .showBackground(true)//是否显示半透明背景
//                .visibleItemsCount(7)//显示item的数量
//                .province("浙江省")//默认显示的省份
//                .city("杭州市")//默认显示省份下面的城市
//                .district("滨江区")//默认显示省市下面的区县数据
//                .provinceCyclic(true)//省份滚轮是否可以循环滚动
//                .cityCyclic(true)//城市滚轮是否可以循环滚动
//                .districtCyclic(true)//区县滚轮是否循环滚动
//                .setCustomItemLayout(R.layout.item_city)//自定义item的布局
//                .setCustomItemTextViewId(R.id.item_city_name_tv)//自定义item布局里面的textViewid
//                .drawShadows(false)//滚轮不显示模糊效果
//                .setLineColor("#03a9f4")//中间横线的颜色
//                .setLineHeigh(2)//中间横线的高度
                .setShowGAT(true)//是否显示港澳台数据，默认不显示
                .build();
        mPicker.setConfig(cityConfig);

        //监听选择点击事件及返回结果
        mPicker.setOnCityItemClickListener(new OnCityItemClickListener() {
            @Override
            public void onSelected(ProvinceBean province, CityBean city, DistrictBean district) {

                //省份
                if (province != null) {
                    province.getName();
                }
                //城市
                if (city != null) {
                    city.getName();
                }
                //地区
                if (district != null) {
                    district.getName();
                }
                mWebView.loadUrl("javascript:if(window.addrees){window.addrees(\'" + province.getName()+"-"+city.getName()+"-"+ district.getName()+"\')}");
            }
            @Override
            public void onCancel() {
                ToastUtils.showLongToast(MainActivity.this, "已取消");
            }
        });

    }
}
